package tv.dyndns.kishibe.qmaclone.server.database; import static com.google.inject.Scopes.SINGLETON; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.dbutils.QueryRunner; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.Singleton; public class DatabaseModule extends AbstractModule { private static final String DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver"; private static final String USERNAME = "qmaclone"; private static final String PASSWORD = "qmaclone"; private static final String URL = "jdbc:mysql://localhost/qmaclone?user=qmaclone&password=qmaclone&autoReconnects=true&userUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Tokyo"; private static final String VALIDATION_QUERY = "SELECT 1"; @Override protected void configure() { bind(CachedDatabase.class).in(SINGLETON); bind(Database.class).to(CachedDatabase.class).in(SINGLETON); } @Provides @Singleton private DataSource provideDataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName(DRIVER_CLASS_NAME); dataSource.setUsername(USERNAME); dataSource.setPassword(PASSWORD); dataSource.setUrl(URL); dataSource.setValidationQuery(VALIDATION_QUERY); return dataSource; } @Provides @Singleton private QueryRunner provideQueryRunner(DataSource dataSource) { return new QueryRunner(dataSource); } }